const matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
    [11, 12, 13]
]
function diagonalSnakeTraverse(matrix) {
    let n = matrix.length   // 样例中n=4, 表示有4行
    let m = matrix[0].length// 样例中m=3, 表示有3列
    let res = []
    // 先统一斜下方向获取元素(i表行，j表列)
    const traverse = (ii, jj) => {
        let temp = []
        while(ii<n && jj>=0) {
            temp.push(matrix[ii][jj])
            ii++
            jj--
        }
        res.push(temp)
    }
    // 遍历第一行和最后一列
    for(let j = 0; j<m ; j++) {
        traverse(0, j)
    }
    for(let i = 1; i<n ; i++) {
        traverse(i, m-1)
    }
    // 此时，res中存储了所有从右上往左下斜下方向的元素
    // 接下来需要将奇数行的元素反转
    for(let i = 0; i<res.length; i++) {
        if(i%2 === 0) {
            res[i].reverse()
        }
    }
    return res.flat()   // 展平结果
}
console.log(diagonalSnakeTraverse(matrix)) // [[1], [2, 4], [3, 5, 7], [6, 8, 11], [9, 12], [13]]